#include <iostream>
#include <vector>
#include <assert.h>

using namespace std;
 

char *my_strcpy(char *dest, const char *src)
{
    assert(src!= nullptr);
}

template <typename T>
class A
{
public:
  decltype(T().begin()) it; //
 
  void getbegin(T &tmp)
  {
     it = tmp.begin();
  }
};
 
 
int main()
{
#if 1
  using vtype = const vector<int>;
 
  vtype b = { 1,2,3,4,5 };
 
  A<vtype> a;
 
  a.getbegin(b);//error：  返回的是const_iterator
 
  std::cout << "Hello World!\n";

  my_strcpy(nullptr, nullptr);
#endif 
#if 0
  vector<int> vi = {1,2,3,4,5,6,7,8};
  vector<int>::const_iterator it;
  vector<int>::reverse_iterator it2;
  vector<int>::iterator it3;
#endif

}